package net.qiqbframework.modelling.command.voucher;

import java.lang.reflect.Member;
import java.util.Optional;

/**
 * 业务ID加载凭证定义
 *
 * @param <ID>
 */
public interface BizIdentifierVoucherModel<ID, C> {
    /**
     * 业务ID加载凭证类型
     *
     * @return
     */
    Class<ID> declaredType();

    Member member();

    String routingBizIdentifierName();

    Optional<ID> bizIdentifierVoucher(C command);

    /**
     * 多个业务ID凭证的情况下，优先级高的负责加载
     *
     * @return 优先级
     */
    int priority();
}
